/**
  ******************************************************************************
  * @file    gpio.h
  * @brief   This file contains all the function prototypes for
  *          the gpio.c file
  ******************************************************************************
  * @attention
  *
  * <h2><center>&copy; Copyright (c) 2021 STMicroelectronics.
  * All rights reserved.</center></h2>
  *
  * This software component is licensed by ST under BSD 3-Clause license,
  * the "License"; You may not use this file except in compliance with the
  * License. You may obtain a copy of the License at:
  *                        opensource.org/licenses/BSD-3-Clause
  *
  ******************************************************************************
  */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __GPIO_H__
#define __GPIO_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/
#include "main.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* USER CODE BEGIN Private defines */

/* USER CODE END Private defines */

void MX_GPIO_Init(void);

/* USER CODE BEGIN Prototypes */
void bm_set_gpio_input(GPIO_TypeDef *GPIOx, uint32_t PinMask,uint32_t PinOutputType,uint32_t pull);
void bm_set_gpio_output(GPIO_TypeDef *GPIOx, uint32_t PinMask,uint32_t PinOutputType,uint32_t pull);
void bm_set_gpio_an(GPIO_TypeDef *GPIOx, uint32_t PinMask,uint32_t PinOutputType,uint32_t pull);
void bm_gpio_pin_set(GPIO_TypeDef *GPIOx, uint32_t PinMask);
void bm_gpio_pin_clear(GPIO_TypeDef *GPIOx, uint32_t PinMask);
uint8_t bm_gpio_pin_read(GPIO_TypeDef *GPIOx, uint32_t PinMask);

#define BM_GPIO_CFG_INPUT(name,pupd,pull)  bm_gpio_cfg_input (name##_GPIO_Port, name##Pin,(pupd),pull)
#define BM_GPIO_CFG_OUTPUT(name,pupd,pull) bm_gpio_cfg_output(name##_GPIO_Port, name##Pin,(pupd),pull)
#define BM_GPIO_PIN_READ(name)        bm_gpio_pin_read  (name##_GPIO_Port, name##_Pin)
#define BM_GPIO_PIN_SET(name)         bm_gpio_pin_set   (name##_GPIO_Port, name##_Pin)
#define BM_GPIO_PIN_CLEAR(name)       bm_gpio_pin_clear (name##_GPIO_Port, name##_Pin)	

/* USER CODE END Prototypes */

#ifdef __cplusplus
}
#endif
#endif /*__ GPIO_H__ */

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
